package com.yict.csms.resourceplan.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.yict.common.entity.PageEntity;
import com.yict.common.service.IBaseService;
import com.yict.csms.resourceplan.dao.IBoxDao;
import com.yict.csms.resourceplan.entity.Box;
import com.yict.csms.resourceplan.entity.BoxContractor;
import com.yict.csms.resourceplan.entity.BoxContractorLine;
import com.yict.csms.resourceplan.entity.BoxTemp;

public interface IBoxService extends IBaseService<Box, Long, IBoxDao> {

	/**
	 * 查询数据
	 * @param searchMap 查询条件
	 * @param pageEntity 分页
	 * @return
	 */
	public List<Box> search(Map<String, Object> searchMap, PageEntity pageEntity);
	
	/**
	 * 保存数据
	 * @param boxContractor 头信息
	 * @param boxContractorLines 行信息
	 * @param boxIds 雪箱ID
	 * @return
	 * @throws Exception
	 */
	public boolean save(BoxContractor boxContractor, List<BoxContractorLine> boxContractorLines, List<Long> boxIds) throws Exception;
	/**
	 * 根据日期取得最大的工作纸号
	 * @param date
	 * @return
	 */
	public String getMaxWorkNo(Date date);
	/**
	 * 根据日期取得最大的数据导入ID
	 * @param date
	 * @return
	 */
	public String getMaxImportId(String date);
	/**
	 * 查询集装箱号码是否存在
	 * @param boxNum
	 * @return true-不存在
	 */
	public boolean findBoxByBoxNum(String boxNum);
	/**
	 * 查询集装箱号码是否存在
	 * @param boxNum
	 * @return true-不存在
	 */
	public boolean findBoxCLineByBoxNum(String boxNum);
	/**
	 * 根据集装箱号码查找工作纸号
	 * @param boxNum
	 * @return
	 */
	public String getWorkNoByBoxNum(String boxNum);
	/**
	 * 保存数据至临时表
	 * 保存前先清空临时表
	 * @param boxTemps
	 * @return
	 * @throws Exception
	 */
	public boolean save(List<BoxTemp> boxTemps) throws Exception;
	/**
	 * 将临时表数据转至雪箱表
	 * @return
	 */
	public boolean trans();
	/**
	 * 删除临时表
	 */
	public void deleteTemp();
	
	/**
	 * 查找集装箱号码是否存在于已派更的PTI/PC工作纸中
	 * @param boxNum
	 * @return 工作纸号
	 */
	public String findWorkNoByBoxNum(String boxNum);
}
